// 初衷：给路径读取返回的内容
const fs =require('fs')
function getFileByPath(fPath){
    return new Promise(function(resolve, reject){
        fs.readFile(fPath, 'utf-8', (err, dataStr)=>{
            // if(err) throw err;
            // console.log(dataStr);
            if(err) reject(err);
            resolve(dataStr)
        })
    })
 
}

// getFileByPath('./222.txt')
// .then(function(dataStr){
//     console.log(dataStr);
// }, function(err){
//     console.log(err)
// })

// 在上一个then中返回一个新的promise对象实例，可以继续使用 .then 来处理，将原来的回调地狱变成一个串联的方式
getFileByPath('./11w1.txt')
.then(function(dataStr){
    console.log(dataStr);
    return getFileByPath('./222.txt')
}, function(err){
    console.log(err.message);
    return getFileByPath('./222.txt')
})
.then(function(dataStr){
    console.log(dataStr);
    return getFileByPath('./333.txt')
},function(err){
    console.log(err.message);
    return getFileByPath('./333.txt')
})
.then(function(dataStr){
    console.log(dataStr);
   
},function(err){
    console.log(err.message);
   
})
.catch(function(err){
    console.log(err)
})
// 当我们有：失败操作不影响接下来操作的情况下，可以为每个promise指定一下失败的回调函数。
//但是要是后续的promise执行依赖于前面的promise的执行结果，后面的就没有执行下去的意义，
// 就可以一旦报错就终止后续所有执行。在最后面加 .catch  会终止所有后续的情况。
// catch的作用：如果前面的promise执行失败，则立即执行，并马上进入catch处理promise中抛出异常。


console.log("sdfasdfasdfasdf")
